package regex;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * 正则表达式: 本身也是一种字符串,只不过这个字符串正好是一个规则
 * 字符规则:参考笔记
 * 使用正则表达式: java.util.regex.Pattern
 * 基本使用:
 *     Pattern p = Pattern.compile("a*b");
 *     Matcher m = p.matcher("aaaaab");
 *     boolean b = m.matches();
 * 简化以上写法:
 *   boolean b = Pattern. matches("a*b", "aaaaab");
 * 我们也可以直接用String类中的方法
 *
 *
 */

public class RegexDemo02 {
    public static void main(String[] args) {
        //method01();
        //method02();
        //method03();
        //method04();
        System.out.println("\\".matches("\\\\"));// 一个\匹配两个正则的\\
        System.out.println("    ".matches("\t"));//在开发工具中,编辑器会自动把tab转化为空格,因此不匹配
        //boolean matches = new Scanner(System.in).nextLine().matches("\t");
        //System.out.println(matches);
    }

    private static void method04() {
        //System.out.println("\");\在java中有特殊含义,代表转义的意思
        System.out.println("\nabc");// \n转义字符 \n代表换行
        System.out.println("\\");// 相当于前一个\把后一个\转义成普通字符
        System.out.println("\\nabc");// 相当于前一个\把后一个\转义成普通字符,因此会输出\nabc
    }

    private static void method03() {
        //matches通过字符串调用,传入的是一个正则,判断这个字符串是不是匹配正则
        boolean matches = "abc".matches("abc");
        System.out.println(matches);
    }

    private static void method02() {
        //三合一写法
        boolean b = Pattern.matches("abc", "abc");
        System.out.println(b);
    }

    private static void method01() {
        //1.编译一个正则表达式
        Pattern p = Pattern.compile("abc");
        //2.创建一个匹配器(mather),将传入的字符串与正则表达式关联
        Matcher m = p.matcher("abc");
        //3.将正则表达式与该字符串进行匹配
        boolean b = m.matches();
        System.out.println(b);
    }
}
